﻿Imports System.Resources
Imports System.Threading
Imports Biz
Imports BLL


Public Class frmMainMetro
    Inherits DevComponents.DotNetBar.Metro.MetroAppForm

    Private _RM As ResourceManager

    Public _ctrlStart As ctrlStart

    Public _ctrlNuevoDepartamento As ctrlNuevoDepartamentos
    Public _ctrlNuevoBusqueda As ctrlNuevaBusqueda
    Public _ctrlNuevoEntrevista As ctrlNuevaEntrevista
    Public _ctrlNuevoFamilia As ctrlNuevaFamilia
    Public _ctrlNuevoPublicacion As ctrlNuevaPublicacion
    Public _ctrlNuevoEmpleado As ctrlNuevoEmpleado
    Public _ctrlNuevoMedios_Busqueda As ctrlNuevoMedios_Busqueda
    Public _ctrlNuevoPostulante As ctrlNuevoPostulante
    Public _ctrlNuevoTipo_Medio_Busqueda As ctrlNuevoTipo_Medio_Busqueda
    Public _ctrlNuevoUsuario As ctrlNuevoUsuario
    Public _ctrlNuevoTipo_Entrevista As ctrlNuevoTipo_Entrevista
    Public _ctrlNuevoTipo_Seleccion As ctrlNuevoTipo_Seleccion
    Public _ctrlNuevaBusqueda As ctrlNuevaBusqueda
    Public _ctrlCambiarContraseña As ctrlCambiarContraseña
    Public _ctrlPoliticasSeguridad As ctrlPoliticasSeguridad

    Public _ctrlEdicionUsuario As ctrlEdicionUsuario
    Public _ctrledicionGrupoAsegurables As ctrlEdicionGrupoAsegurables

    Public _ctrlEdicionRequisitos As ctrlEdicionRequisitos

    Public _ctrlNuevaSolicitud As ctrlNuevaSolicitud
    Public _ctrlNuevaEntrevista As ctrlNuevaEntrevista
    Public _ctrlNuevaSeleccionPostulante As ctrlNuevaSeleccionPostulante

    Private _ctrlBackup As ctrlBackup


    Private Sub frmMainMetro_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
        If Not AppCurrentState.UsuarioLogueado Is Nothing Then
            GestorBitacora.Instance.Loguear(New cBitacora_Usuario(AppCurrentState.UsuarioLogueado.Usu_Legajo, Utils.Enumeradores.Bitacora.Logout))
        End If

        Windows.Forms.Application.Exit()
    End Sub

    Public Sub Inicializar()
        _ctrlStart = New ctrlStart
        _ctrlStart.Llamador = Me

        _ctrlNuevaBusqueda = New ctrlNuevaBusqueda
        _ctrlNuevaBusqueda.Llamador = Me

        ctrlFormListaUsuarios.Llamador = Me
        ctrlFormDepartamentos.Llamador = Me
        ctrlFormEmpleados.Llamador = Me
        ctrlFormTiposMediosBusqueda.Llamador = Me
        ctrlFormMediosBusqueda.Llamador = Me
        ctrlFormTiposEntrevista.Llamador = Me
        ctrlFormListaUsuarios.Llamador = Me
        ctrlFormListaFamilia.Llamador = Me
        ctrlFormBusquedas.Llamador = Me

        _ctrlNuevoDepartamento = New ctrlNuevoDepartamentos
        _ctrlNuevoDepartamento.Llamador = Me

        _ctrlNuevoBusqueda = New ctrlNuevaBusqueda
        _ctrlNuevoBusqueda.Llamador = Me

        _ctrlNuevoEntrevista = New ctrlNuevaEntrevista
        _ctrlNuevoEntrevista.Llamador = Me

        _ctrlNuevoFamilia = New ctrlNuevaFamilia
        _ctrlNuevoFamilia.Llamador = Me

        _ctrlNuevoPublicacion = New ctrlNuevaPublicacion
        _ctrlNuevoPublicacion.Llamador = Me

        _ctrlNuevoEmpleado = New ctrlNuevoEmpleado
        _ctrlNuevoEmpleado.Llamador = Me

        _ctrlNuevoMedios_Busqueda = New ctrlNuevoMedios_Busqueda
        _ctrlNuevoMedios_Busqueda.Llamador = Me

        _ctrlNuevoPostulante = New ctrlNuevoPostulante
        _ctrlNuevoPostulante.Llamador = Me

        _ctrlNuevoTipo_Medio_Busqueda = New ctrlNuevoTipo_Medio_Busqueda
        _ctrlNuevoTipo_Medio_Busqueda.Llamador = Me

        _ctrlNuevoUsuario = New ctrlNuevoUsuario
        _ctrlNuevoUsuario.Llamador = Me

        _ctrlPoliticasSeguridad = New ctrlPoliticasSeguridad
        _ctrlPoliticasSeguridad.Llamador = Me

        _ctrlNuevoTipo_Entrevista = New ctrlNuevoTipo_Entrevista
        _ctrlNuevoTipo_Entrevista.Llamador = Me

        _ctrlNuevoTipo_Seleccion = New ctrlNuevoTipo_Seleccion
        _ctrlNuevoTipo_Seleccion.Llamador = Me

        _ctrlNuevoUsuario = New ctrlNuevoUsuario
        _ctrlNuevoUsuario.Llamador = Me

        _ctrlNuevoFamilia = New ctrlNuevaFamilia
        _ctrlNuevoFamilia.Llamador = Me

        _ctrlEdicionUsuario = New ctrlEdicionUsuario
        _ctrlEdicionUsuario.Llamador = Me

        _ctrledicionGrupoAsegurables = New ctrlEdicionGrupoAsegurables
        _ctrledicionGrupoAsegurables.Llamador = Me

        _ctrlNuevaBusqueda = New ctrlNuevaBusqueda
        _ctrlNuevaBusqueda.Llamador = Me
        _ctrlNuevaBusqueda.Inicializar()

        _ctrlCambiarContraseña = New ctrlCambiarContraseña
        _ctrlCambiarContraseña.Llamador = Me

        _ctrlPoliticasSeguridad = New ctrlPoliticasSeguridad
        _ctrlPoliticasSeguridad.Llamador = Me

        _ctrlEdicionRequisitos = New ctrlEdicionRequisitos
        _ctrlEdicionRequisitos.Llamador = Me

        _ctrlNuevaSolicitud = New ctrlNuevaSolicitud
        _ctrlNuevaSolicitud.Llamador = Me

        _ctrlNuevaEntrevista = New ctrlNuevaEntrevista
        _ctrlNuevaEntrevista.Llamador = Me

        _ctrlNuevaSeleccionPostulante = New ctrlNuevaSeleccionPostulante
        _ctrlNuevaSeleccionPostulante.Llamador = Me

        ctrlFormBusquedas.Inicializar()

    End Sub

    Public Sub Mostrar()

        Me.MetroTabPanel1.Hide()
        Me.MetroTabPanel3.Hide()
        Me.MetroTabPanel4.Hide()
        Me.MetroTabPanel5.Hide()
        Me.MetroTabPanel6.Hide()

        Me.Show()

        Me._ctrlStart.Mostrar()
        Me.ShowModalPanel(Me._ctrlStart, DevComponents.DotNetBar.Controls.eSlideSide.Left)

        Me.MetroTabPanel1.Show()
        Me.MetroTabPanel3.Show()
        Me.MetroTabPanel4.Show()
        Me.MetroTabPanel5.Show()
        Me.MetroTabPanel6.Show()

    End Sub

    Private Sub tabBackup_Click(sender As Object, e As EventArgs) Handles tabBackup.Click

        ctrlFormBackup.Inicializar()

    End Sub

    Private Sub tabBitacora_Click(sender As Object, e As EventArgs) Handles tabBitacora.Click

        ctrlFormBitacora.Inicializar()

    End Sub

    Private Sub tabBusquedas_Click(sender As Object, e As EventArgs) Handles tabBusquedas.Click

        ctrlFormBusquedas.CargarGrillaBusquedas()

    End Sub

    Private Sub tabMaestros_Click(sender As Object, e As EventArgs) Handles tabMaestros.Click

        ctrlFormDepartamentos.Inicializar()
        ctrlFormEmpleados.Inicializar()
        ctrlFormTiposMediosBusqueda.Inicializar()
        ctrlFormMediosBusqueda.Inicializar()
        ctrlFormTiposEntrevista.Inicializar()

    End Sub

    Private Sub tabAdminSeguridad_Click(sender As Object, e As EventArgs) Handles tabAdminSeguridad.Click

        ctrlFormListaUsuarios.Inicializar()
        ctrlFormListaFamilia.Inicializar()

    End Sub

    Public Sub RefrescarGrillas()
        ctrlFormBackup.CargarGrilla()
        ctrlFormBitacora.CargarGrilla()
        ctrlFormBusquedas.CargarGrilla()
        ctrlFormDepartamentos.CargarGrilla()
        ctrlFormEmpleados.CargarGrilla()
        ctrlFormTiposMediosBusqueda.CargarGrilla()
        ctrlFormMediosBusqueda.CargarGrilla()
        ctrlFormTiposEntrevista.CargarGrilla()
        ctrlFormListaUsuarios.CargarGrilla()
        ctrlFormListaFamilia.CargarGrilla()
    End Sub

    Public Sub RefrescarGrillaRequisitos()
        ctrlFormBusquedas.CargarGrillaRequisitos()
    End Sub

    Public Sub RefrescarGrillaFiltroBusquedas()
        ctrlFormBusquedas.CargarGrillaBusquedas()
    End Sub

    Public Sub RefrescarGrillaPublicaciones()
        ctrlFormBusquedas.CargarGrillaPublicaciones()
    End Sub

    Public Sub RefrescarGrillaSolicitudes()
        ctrlFormBusquedas.CargarGrillaSolicitudes()
    End Sub

    Public Sub RefrescarGrillaEntrevistas(Soli_Numero As Int16)
        ctrlFormBusquedas.CargarGrillaEntrevistas(Soli_Numero)
    End Sub

    Public Sub RefrescarGrillaSeleccion(iBusq_Numero As Int16)
        ctrlFormBusquedas.CargarGrillaSeleccion(iBusq_Numero)
    End Sub

    Private Sub ButtonItem1_Click(sender As Object, e As EventArgs) Handles btnItemSalir.Click
        Application.Exit()
    End Sub

    Private Sub btnItemCambiarPass_Click(sender As Object, e As EventArgs) Handles btnItemCambiarPass.Click
        Dim oAux As cUsuario = New cUsuario
        oAux.Usu_Legajo = AppCurrentState.UsuarioLogueado.Usu_Legajo

        Try
            oAux = GestorUsuario.Instance.Buscar(oAux)

        Catch ex As Excepciones.UsuarioFalloBuscar
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

        _ctrlCambiarContraseña.MostrarParaAlta(oAux)
        Me.ShowModalPanel(_ctrlCambiarContraseña, DevComponents.DotNetBar.Controls.eSlideSide.Right)

    End Sub

    Private Sub btnItemPoliticasSeguridad_Click(sender As Object, e As EventArgs) Handles btnItemPoliticasSeguridad.Click

        Try

            If Not GestorUsuario.Instance.TienePermiso(AppCurrentState.UsuarioLogueado, New cPatente(Utils.Enumeradores.Patentes.PolicitasSeguridad)) Then
                StatusBarLabel.Text = "El usuario no posee permisos suficientes para realizar esta operación"
                Exit Sub
            End If

            _ctrlPoliticasSeguridad.MostrarParaEdicion()
            Me.ShowModalPanel(_ctrlPoliticasSeguridad, DevComponents.DotNetBar.Controls.eSlideSide.Right)

        Catch ex As Excepciones.UsuarioFalloConsultaTieneAcceso
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

    End Sub

    Private Sub cmbIdioma_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbIdioma.SelectedIndexChanged
        Dim oUsuario As cUsuario = New cUsuario


        If cmbIdioma.SelectedItem.value = "es" And AppCurrentState.UsuarioLogueado.Idioma.Idi_Codigo <> 1 Then
            Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("es-AR")
            Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.CreateSpecificCulture("es-AR")

            oUsuario.Usu_Legajo = AppCurrentState.UsuarioLogueado.Usu_Legajo
            oUsuario.Idioma.Idi_Codigo = 1

            Try
                GestorUsuario.Instance.CambiarIdioma(oUsuario)

                AppCurrentState.UsuarioLogueado = GestorUsuario.Instance.Buscar(oUsuario)

                GestorBitacora.Instance.Loguear(New cBitacora_Usuario(AppCurrentState.UsuarioLogueado.Usu_Legajo, Utils.Enumeradores.Bitacora.SegUsuarioCambioIdioma))

            Catch ex As Excepciones.UsuarioFalloEditar
                Main.ManejarExcepcion(ex)
            Catch ex As Excepciones.BitacoraFalloAlta
                Main.ManejarExcepcion(ex)
            Catch ex As Exception
                Main.ManejarExcepcion(ex)
            End Try

        ElseIf cmbIdioma.SelectedItem.value = "en" And AppCurrentState.UsuarioLogueado.Idioma.Idi_Codigo <> 2 Then
            Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US")
            Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US")

            oUsuario.Usu_Legajo = AppCurrentState.UsuarioLogueado.Usu_Legajo
            oUsuario.Idioma.Idi_Codigo = 2

            Try
                GestorUsuario.Instance.CambiarIdioma(oUsuario)

                AppCurrentState.UsuarioLogueado = GestorUsuario.Instance.Buscar(oUsuario)

                GestorBitacora.Instance.Loguear(New cBitacora_Usuario(AppCurrentState.UsuarioLogueado.Usu_Legajo, Utils.Enumeradores.Bitacora.SegUsuarioCambioIdioma))

            Catch ex As Excepciones.UsuarioFalloEditar
                Main.ManejarExcepcion(ex)
            Catch ex As Excepciones.BitacoraFalloAlta
                Main.ManejarExcepcion(ex)
            Catch ex As Exception
                Main.ManejarExcepcion(ex)
            End Try
        End If

        SetIdioma()

    End Sub

    Public Sub SetIdioma()
        ctrlFormListaUsuarios.SetIdioma()
        ctrlFormDepartamentos.SetIdioma()
        ctrlFormEmpleados.SetIdioma()
        ctrlFormTiposMediosBusqueda.SetIdioma()
        ctrlFormMediosBusqueda.SetIdioma()
        ctrlFormTiposEntrevista.SetIdioma()
        ctrlFormListaUsuarios.SetIdioma()
        ctrlFormListaFamilia.SetIdioma()
        ctrlFormBusquedas.SetIdioma()


        _ctrlNuevoDepartamento.SetIdioma()
        _ctrlNuevoBusqueda.SetIdioma()
        _ctrlNuevoEntrevista.SetIdioma()
        _ctrlNuevoFamilia.SetIdioma()
        _ctrlNuevoPublicacion.SetIdioma()
        _ctrlNuevoEmpleado.SetIdioma()
        _ctrlNuevoMedios_Busqueda.SetIdioma()
        _ctrlNuevoPostulante.SetIdioma()
        _ctrlNuevoTipo_Medio_Busqueda.SetIdioma()
        _ctrlNuevoUsuario.SetIdioma()
        _ctrlNuevoTipo_Entrevista.SetIdioma()
        _ctrlNuevoTipo_Seleccion.SetIdioma()
        _ctrlNuevaBusqueda.SetIdioma()
        _ctrlCambiarContraseña.SetIdioma()
        _ctrlPoliticasSeguridad.SetIdioma()

        _ctrlEdicionUsuario.SetIdioma()
        _ctrledicionGrupoAsegurables.SetIdioma()

        _ctrlEdicionRequisitos.SetIdioma()

        _ctrlNuevaSolicitud.SetIdioma()
        _ctrlNuevaEntrevista.SetIdioma()
        _ctrlNuevaSeleccionPostulante.SetIdioma()

        ctrlFormBackup.SetIdioma()

        ctrlFormBitacora.SetIdioma()

        Me.SetIdiomaForm()

    End Sub

    Private Sub SetIdiomaForm()

        _RM = New ResourceManager("UI.Idiomas", System.Reflection.Assembly.GetExecutingAssembly)

        tabBusquedas.Text = _RM.GetString("strBusquedasUP")
        tabMaestros.Text = _RM.GetString("strMaestrosUP")
        tabAdminSeguridad.Text = _RM.GetString("strSeguridadUP")
        tabBackup.Text = _RM.GetString("strBackupUP")
        tabBitacora.Text = _RM.GetString("strBitacoraUP")
        tabBusquedas.Parent.Refresh()

        metroAppBtnArchivo.Text = _RM.GetString("strArchivo")

        btnItemRptProximasEntrevistas.Text = _RM.GetString("strRptProximasEntrevistas")
        btnItemRptBusquedasActivas.Text = _RM.GetString("strRptBusquedasActivas")
        btnItemCambiarPass.Text = _RM.GetString("strCambiarContraseña")
        btnItemPoliticasSeguridad.Text = _RM.GetString("strPoliticasSeguridad")
        btnItemSalir.Text = _RM.GetString("strSalir")
        labItemConfiguracion.Text = _RM.GetString("strConfiguracion")
        labItemCambiarIdioma.Text = _RM.GetString("strCambiarIdioma")

        MetroShell1.HelpButtonText = _RM.GetString("strAyudaUP")

        Me.Text = _RM.GetString("strBusquedasLaborales")
        Me.Refresh()

    End Sub


    Private Sub btnItemRptProximasEntrevistas_Click(sender As Object, e As EventArgs) Handles btnItemRptProximasEntrevistas.Click

        Try

            If Not GestorUsuario.Instance.TienePermiso(AppCurrentState.UsuarioLogueado, New cPatente(Utils.Enumeradores.Patentes.VisualizacionReportes)) Then
                StatusBarLabel.Text = "El usuario no posee permisos suficientes para realizar esta operación"
                Exit Sub
            End If

            frmReportEntrevistas.rv.RefreshReport()

            frmReportEntrevistas.Show()

        Catch ex As Excepciones.UsuarioFalloConsultaTieneAcceso
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

    End Sub


    Private Sub btnItemRptBusquedasActivas_Click(sender As Object, e As EventArgs) Handles btnItemRptBusquedasActivas.Click

        Try

            If Not GestorUsuario.Instance.TienePermiso(AppCurrentState.UsuarioLogueado, New cPatente(Utils.Enumeradores.Patentes.VisualizacionReportes)) Then
                StatusBarLabel.Text = "El usuario no posee permisos suficientes para realizar esta operación"
                Exit Sub
            End If

            frmReporteBusquedasActivas.Show()

            frmReporteBusquedasActivas.rv.Refresh()


        Catch ex As Excepciones.UsuarioFalloConsultaTieneAcceso
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

    End Sub

    Public Sub PosicionarComboIdioma(sTag As String)
        Dim cmbItem As Object

        If cmbIdioma.Items.Count > 1 Then
            For Each cmbItem In cmbIdioma.Items
                If cmbItem.Value = sTag Then
                    cmbIdioma.SelectedItem = cmbItem
                End If
            Next
        End If

    End Sub

    Public Sub AplicarPermisos()

        Try

            If Not GestorUsuario.Instance.TienePermiso(AppCurrentState.UsuarioLogueado, New cPatente(Utils.Enumeradores.Patentes.BitacoraDelSistema)) Then
                tabBitacora.Visible = False
            End If

            If Not GestorUsuario.Instance.TienePermiso(AppCurrentState.UsuarioLogueado, New cPatente(Utils.Enumeradores.Patentes.Backup)) Then
                tabBackup.Visible = False
            End If

            If Not GestorUsuario.Instance.TienePermiso(AppCurrentState.UsuarioLogueado, New cPatente(Utils.Enumeradores.Patentes.AdminSeguridad)) Then
                tabAdminSeguridad.Visible = False
            End If

            If Not GestorUsuario.Instance.TienePermiso(AppCurrentState.UsuarioLogueado, New cPatente(Utils.Enumeradores.Patentes.ConsultaMaestros)) Then
                tabMaestros.Visible = False
            End If

        Catch ex As Excepciones.UsuarioFalloConsultaTieneAcceso
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

    End Sub

End Class
